<!--
 * @LastEditors: 七七
 * @Date: 2023-01-11 08:59:57
-->
<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title></title>
  <script type="text/javascript">

    function Person(name, age, gender) {
      this.name = name;
      this.age = age;
      this.gender = gender;
    }

    //修改Person原型的toString
    Person.prototype.toString = function () {
      return "Person[name=" + this.name + ",age=" + this.age + ",gender=" + this.gender + "]";
    };


    //创建一个Person实例
    // 将这些person对象放入到一个数组中
    var per = new Person("孙悟空", 18, "男");
    var per2 = new Person("猪八戒", 28, "男");
    var per3 = new Person("tom", 28, "男");
    var per4 = new Person("lucy", 15, "女");
    var per5 = new Person("luck", 17, "女");


    var perArr = [per, per2, per3, per4, per5];

    // 创建一个函数，可以将perArr中的满18岁的Person提取出来，然后封装到一个新的数组中并返回
    // arr 形参，要提取信息的数组
    function getAdult(arr) {
      // 创建一个新的数组
      var newArr = [];

      // 遍历arr，获取arr中的对象
      for (const item of arr) {
        // console.log(item);
        // 判断person对象的age是否大于等于18
        // 如果大于18，则将这个对象添加到newArr中
        if (item.age >= 18) newArr.push(item)
      }

      // 将新的数组返回
      return newArr;
    }

    var result = getAdult(perArr);
    console.log(result);




    //当我们直接在页面中打印一个对象时，事件上是输出的对象的toString()方法的返回值
    //如果我们希望在输出对象时不输出[object Object]，可以为对象添加一个toString()方法
    //Person[name=孙悟空,age=18,gender=男]
    /*per.toString = function(){
      return "Person[name="+this.name+",age="+this.age+",gender="+this.gender+"]";
    };*/

    var result = per.toString();
    //console.log("result = " + result);
    //console.log(per.__proto__.__proto__.hasOwnProperty("toString"));
    // console.log(per2);
    // console.log(per);


  </script>
</head>

<body>
</body>

</html>